package com.eight.paper.admin.util.pdf;

import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ResourceUtils;
import org.springframework.util.StringUtils;

import java.io.FileNotFoundException;

/**
 * @desc: pdf通过属性
 * @author: eight
 */
@Slf4j
public class PdfWrapper {

    /**
     * 表单域用的fontName
     */
    private static String FONT_NAME = PdfCommonConstants.DEFAULT_FONT;

    /**
     * 默认模板引擎地址，支持thymeleaf和freemarker
     */
    private static String TEMPLATE_PATH = PdfCommonConstants.DEFAULT_TEMPLATE_PATH;

    /**
     * 非表单域用字体路径
     */
    private static String FONT_PATH;

    private static String BASE_IMG_DIR;

    /**
     * 水印
     */
    private static PdfWatermark PDF_WATERMARK;

    protected static String getFontPath() {
        if (StringUtils.hasText(FONT_PATH)) {
            log.info("load html-engine self define font:{}", FONT_PATH);
            return FONT_PATH;
        }
        try {
            FONT_PATH = ResourceUtils.getFile(PdfCommonConstants.DEFAULT_FONT_FILE).getPath();
            log.info("load html-engine default font:{}", PdfCommonConstants.DEFAULT_FONT_FILE);
        } catch (FileNotFoundException e) {
            log.error("html-engine default font not found,{}", e.getLocalizedMessage());
        }
        return FONT_PATH;
    }

    protected static String getBaseImgDir() {
        return BASE_IMG_DIR;
    }

    /**
     * 不设置默认"STSong-Light"
     *
     * @return
     */
    protected static String getFontName() {
        return FONT_NAME;
    }

    /**
     * 设置字体路径
     *
     * @param path
     */
    public static void setFontPath(String path) {
        FONT_PATH = path;
    }

    /**
     * 设置图片文件夹相对路径
     * 不建议使用，目前发现不同环境、不同框架内可能无效
     *
     * @param baseImgDir
     */
    public static void setBaseImgDir(String baseImgDir) {
        BASE_IMG_DIR = baseImgDir;
    }

    /**
     * 设置字体名，不设置默认"STSong-Light"
     *
     * @param fontName
     */
    public static void setFontName(String fontName) {
        FONT_NAME = fontName;
    }

    public static String getTemplateDirPath() {
        return TEMPLATE_PATH;
    }

    /**
     * 设置模板存在目录的路径，默认/templates/，即框架自带的路径
     *
     * @param templatePath
     */
    public static void setTemplateDirPath(String templatePath) {
        TEMPLATE_PATH = templatePath;
    }

    protected static PdfWatermark getPdfWatermark() {
        return PDF_WATERMARK;
    }

    /**
     * 设置水印
     *
     * @param pdfWatermark
     */
    public static void setPdfWatermark(PdfWatermark pdfWatermark) {
        PDF_WATERMARK = pdfWatermark;
    }
}
